home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / IDLIncludes / SCSI.idl < prev    next >
Text File  |  1996-05-01  |  8KB  |  266 lines

  1. /*
  2.      File:        SCSI.idl
  3.  
  4.      Contains:    SCSI Family Interfaces.
  5.  
  6.      Version:    Technology:    System 8.0
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __SCSI_IDL__
  19. #define __SCSI_IDL__
  20.  
  21. #include <somobj.idl>
  22. #include <somcls.idl>
  23.  
  24. #ifndef __TYPES_IDL__
  25. #include <Types.idl>
  26. #endif
  27. #ifndef __MIXEDMODE_IDL__
  28. #include <MixedMode.idl>
  29. #endif
  30. #if FOR_SYSTEM8_PREEMPTIVE
  31. #ifndef __KERNEL_IDL__
  32. #include <Kernel.idl>
  33. #endif
  34. #ifndef __NAMEREGISTRY_IDL__
  35. #include <NameRegistry.idl>
  36. #endif
  37. #ifndef __IOITERATOR_IDL__
  38. #include <IOIterator.idl>
  39. #endif
  40. #endif
  41.  
  42. #ifdef __SOMIDL__
  43.  
  44. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  45. /* SCSI Manager errors */
  46. #endif
  47. #if FOR_SYSTEM7_ONLY
  48. /* TIB opcodes */
  49. /* Signatures */
  50. /* Driver Descriptor Map */
  51. typedef SOMLargeStruct            Block0;                        /* Derived from a struct of 512 bytes in size */
  52.  
  53. /*Driver descriptor*/
  54. typedef SOMLargeStruct            DDMap;                        /* Derived from a struct of 8 bytes in size */
  55.  
  56. /* Partition Map Entry */
  57. typedef SOMLargeStruct            Partition;                    /* Derived from a struct of 512 bytes in size */
  58.  
  59. /* TIB instruction */
  60. typedef SOMLargeStruct            SCSIInstr;                    /* Derived from a struct of 10 bytes in size */
  61.  
  62. /* SCSI Phases (used by SIMs to support the Original SCSI Manager */
  63. #endif
  64. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  65. /* SCSI Callback Procedure Prototypes */
  66. typedef OpaquePtr AENCallbackProcPtr;
  67. typedef OpaquePtr AENCallbackUPP;
  68. typedef OpaquePtr SIMInitProcPtr;
  69. typedef OpaquePtr SIMInitUPP;
  70. typedef OpaquePtr SIMActionProcPtr;
  71. typedef OpaquePtr SIMActionUPP;
  72. typedef OpaquePtr SCSIProcPtr;
  73. typedef OpaquePtr SCSIUPP;
  74. typedef OpaquePtr SCSIMakeCallbackProcPtr;
  75. typedef OpaquePtr SCSIMakeCallbackUPP;
  76. /* SCSIInterruptPollProcPtr is obsolete (use SCSIInterruptProcPtr) but still here for compatibility */
  77. typedef OpaquePtr SCSIInterruptPollProcPtr;
  78. typedef OpaquePtr SCSIInterruptPollUPP;
  79. typedef OpaquePtr SCSIInterruptProcPtr;
  80. typedef OpaquePtr SCSIInterruptUPP;
  81. #endif
  82. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  83. typedef OpaquePtr SCSICallbackProcPtr;
  84. typedef OpaquePtr SCSICallbackUPP;
  85. #endif
  86. #if FOR_SYSTEM7_ONLY
  87. #endif
  88. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  89. /* SCSI Manager function codes */
  90. /* Define DeviceIdent structure */
  91. typedef SOMFourByteStruct        DeviceIdent;                /* Derived from a struct of 4 bytes in size */
  92.  
  93. /*
  94.  #endif // FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  95.  #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  96. */
  97. /* Allocation length defines for some of the fields */
  98. typedef OpaquePtr                SCSIDataPtr;                /* Substituted OpaquePtr for ``octet*'' */
  99.  
  100. /* Command Descriptor Block structure */
  101. typedef SOMLargeStruct            CDB;                        /* Derived from a struct of 20 bytes in size */
  102.  
  103. typedef OpaquePtr                CDBPtr;                        /* Substituted OpaquePtr for ``CDB*'' */
  104.  
  105. /* Scatter/gather list element */
  106. typedef SOMLargeStruct            SGRecord;                    /* Derived from a struct of 8 bytes in size */
  107.  
  108. /*
  109.  #endif    // FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  110.  #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  111. */
  112. typedef SOMLargeStruct            SCSIHdr;                    /* Derived from a struct of 36 bytes in size */
  113.  
  114. typedef SOMLargeStruct            SCSI_PB;                    /* Derived from a struct of 36 bytes in size */
  115.  
  116. /*
  117.  #endif    // FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  118.   This is temporary until we have connection protocol ready.
  119.  #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  120. */
  121. typedef SOMLargeStruct            SCSI_IO;                    /* Derived from a struct of 176 bytes in size */
  122.  
  123. typedef SCSI_IO                    SCSIExecIOPB;
  124.  
  125. /* Bus inquiry PB */
  126. typedef SOMLargeStruct            SCSIBusInquiryPB;            /* Derived from a struct of 172 bytes in size */
  127.  
  128. /* Abort SIM Request PB */
  129. typedef SOMLargeStruct            SCSIAbortCommandPB;            /* Derived from a struct of 40 bytes in size */
  130.  
  131. /* Terminate I/O Process Request PB */
  132. typedef SOMLargeStruct            SCSITerminateIOPB;            /* Derived from a struct of 40 bytes in size */
  133.  
  134. /* Reset SCSI Bus PB */
  135. typedef SOMLargeStruct            SCSIResetBusPB;                /* Derived from a struct of 36 bytes in size */
  136.  
  137. /* Reset SCSI Device PB */
  138. typedef SOMLargeStruct            SCSIResetDevicePB;            /* Derived from a struct of 36 bytes in size */
  139.  
  140. /* Release SIM Queue PB */
  141. typedef SOMLargeStruct            SCSIReleaseQPB;                /* Derived from a struct of 36 bytes in size */
  142.  
  143. #endif
  144. #if FOR_SYSTEM7_ONLY
  145. /* SCSI Get Virtual ID Info PB */
  146. typedef SOMLargeStruct            SCSIGetVirtualIDInfoPB;        /* Derived from a struct of 40 bytes in size */
  147.  
  148. /* Create/Lookup/Remove RefNum for Device PB */
  149. typedef SOMLargeStruct            SCSIDriverPB;                /* Derived from a struct of 44 bytes in size */
  150.  
  151. /* Load Driver PB */
  152. typedef SOMLargeStruct            SCSILoadDriverPB;            /* Derived from a struct of 40 bytes in size */
  153.  
  154. #endif
  155. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  156. /* Defines for the scsiTransferType field */
  157. /* New errors for SCSI Family         */
  158. /* Defines for the scsiResultFlags field */
  159. /* Defines for the bit numbers of the scsiFlags field in the PB header for the SCSIExecIO function */
  160. /* Defines for the bit masks of the scsiFlags field */
  161. /* bit masks for the scsiIOFlags field in SCSIExecIOPB */
  162. /* Defines for the Bus Inquiry PB fields. */
  163. /* scsiHBAInquiry field bits */
  164. /* Defines for the scsiDataType field */
  165. /* scsiDataTypes field bits  */
  166. /*    bits 0->15 Apple-defined, 16->30 3rd-party unique, 31 = reserved */
  167. /* scsiScanFlags field bits */
  168. /* scsiFeatureFlags field bits */
  169. /* scsiWeirdStuff field bits */
  170. /* scsiHBAslotType values */
  171. #endif
  172. #if FOR_SYSTEM7_ONLY
  173. /* Defines for the scsiDriverFlags field (in SCSIDriverPB) */
  174. /* SCSI status*/
  175. /* SCSI messages*/
  176. #endif
  177. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  178. /*  SIMInitInfo PB */
  179. /* directions are for SCSIRegisterBus call ( -> parm, <- result)             */
  180. typedef SOMLargeStruct            SIMInitInfo;                /* Derived from a struct of 60 bytes in size */
  181.  
  182. /* Glue between SCSI calls and SCSITrap format */
  183. /* moveq #kSCSIx, D0;  _SCSIAtomic */
  184. #endif
  185. #if FOR_SYSTEM8_PREEMPTIVE
  186. /*
  187.     File:        SCSIConn.h
  188.  
  189.     Contains:    Connection Based parameter checking
  190.  
  191.     Version:    0.1
  192.  
  193.     Written by:    Darryl Chan
  194.  
  195.     Copyright:    © 1995-1996 by Apple Computer, Inc., all rights reserved.
  196.  
  197.     File Ownership:
  198.  
  199.         DRI:                Darryl Chan
  200.  
  201.         Other Contact:        Stanford Au
  202.  
  203.         Technology:            IO Group
  204.  
  205.     Writers:
  206.  
  207.         (DC)    Darryl Chan
  208.  
  209.     Change History (most recent first):
  210.  
  211.          <4>     1/25/96    DC        Integrate to D11 - name registry changes
  212.          <3>     1/18/96    DC        Split file to public and private interfaces and converting to
  213.                                     MrC.
  214.          <2>     1/15/96    DC        Add more commands
  215.          <1>      1/3/96    DC        First checked in.
  216.  
  217. */
  218. typedef UInt32                    ConnectionType;
  219.  
  220. typedef ObjectID                ConnectionID;
  221.  
  222. typedef MessageID                SCSIExecIOTag;
  223.  
  224. /*        values for 'type's of connection (UInt16)*/
  225. typedef SOMLargeStruct            SCSIDataObject;                /* Derived from a struct of 12 bytes in size */
  226.  
  227. typedef SOMLargeStruct            SCSICDBObject;                /* Derived from a struct of 18 bytes in size */
  228.  
  229. typedef SOMLargeStruct            SCSIFlagsObject;            /* Derived from a struct of 8 bytes in size */
  230.  
  231. typedef SOMLargeStruct            SCSIExecIOResult;            /* Derived from a struct of 272 bytes in size */
  232.  
  233. typedef SOMLargeStruct            SCSIIOOptionsObject;        /* Derived from a struct of 8 bytes in size */
  234.  
  235. typedef SOMLargeStruct            SCSIHandshakeObject;        /* Derived from a struct of 16 bytes in size */
  236.  
  237. typedef SOMLargeStruct            SCSIBusInfo;                /* Derived from a struct of 134 bytes in size */
  238.  
  239. typedef OpaquePtr                DeviceType;                    /* Substituted OpaquePtr for array of char of size 9 */
  240.  
  241. /* this replaces SCSIDevList*/
  242. typedef SOMLargeStruct            SCSIIOIteratorData;            /* Derived from a struct of 33 bytes in size */
  243.  
  244. /*
  245. _____________________________________________________________________
  246.         Client type used to identify the type of client we are dealing 
  247.         with.
  248. _____________________________________________________________________
  249. */
  250. typedef UInt8                    ClientType;
  251.  
  252. /*     for Client type*/
  253. /*
  254.     
  255.     New command to get Registry Entry ID for the SCSI Plugin
  256. */
  257. typedef SOMLargeStruct            SCSIGetRegEntryIDPB;        /* Derived from a struct of 52 bytes in size */
  258.  
  259. /*  Functions declarations*/
  260. #endif
  261.  
  262. #endif /* __SOMIDL__ */
  263.  
  264. #endif /* __SCSI_IDL__ */
  265.  
  266.